iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
AI & Data

AI白話文運動系列之「A!給我那張Image!」系列 第 12

番外篇—AI模型怎麼學得好?欠擬合(Underfitting)與過擬合(Overfitting)

  • 分享至 

  • xImage
  •  

前言

昨天的內容我們討論了AI領域中機率與統計可能會應用在哪些方面,今天我們將接著往下討論,藉由訓練資料集所訓練出來的模型,是否能在實際應用中有好的表現?

先備知識

  1. 國中數學(至少需要對函數有點基本概念)

看完今天的內容你可能會知道......

  1. 統計有哪些概念被應用在AI中
  2. 欠擬合(Underfitting)與過擬合(Overfitting)是甚麼
  3. 欠擬合(Underfitting)與過擬合(Overfitting)的成因與行為

一、基礎統計入門

  • 昨天的內容基本上都聚焦在機率上,不過統計在AI領域中也是非常重要的,因此,今天的內容可以看成是昨天的延伸補充,會花一些時間討論統計在AI中的應用。

    1. 概述

    • 統計之所以重要,一來是因為我們希望可以通過整體的資訊推論出某種規則或歸納成某種現象,另一方面是因為我們很難掌握整體的真實狀況,所以我們需要靠某些方法估計或逼近實際的現象。舉例來說,每次鄰近大選時,都會有許多民調結果被拿出來討論,因為我們沒辦法得知所有人的投票意願,因此我們只能使用「抽樣」的方法,利用足夠多的樣本與一些統計假設來預估實際的結果。如果有了這樣的結果就可以進一步分析,不同特徵的群體有什麼樣的投票傾向,讓候選人的可以以此為依據準備日後的選戰。
    • 在統計學裡面有許多的「假設」,跟一般人認知的數學很不一樣,我們通常會期待在數學中說一就是一,不存在「隨機性」,可是統計跟機率不是,因為我們無法得出「所有」結果,一切我們討論的東西都是建立在我們的觀察或抽樣上,這本身就會有些誤差產生,更何況我們還需要通過這些東西去推測整體的資訊。

    2. 平均數與期望值

    • 這邊先讓我們回想一下昨天的內容,我們談到了「機率」,也有提供一個簡單的公式告訴大家怎麼計算機率值,現在讓我們思考一個問題,今天你去買刮刮樂的時候,你有想過你會贏多少錢嗎?這個問題是不是有點難回答,畢竟不同獎項贏的錢不一樣,刮出不同獎項的機率也不一樣,所以要回答出一個具體的數字似乎有點困難。但是,真的沒有方法可以描述這種情況嗎?知道所有的機率跟所有金額的話,能不能得出甚麼有用的資訊呢?如果有的話我是否可以根據這個結果判斷該不該買這張刮刮樂。
    • 在機率中確實有個概念被用來描述這個現象,也就是「期望值」,是不是和我們剛剛想要的概念一模一樣!如果有了這樣的結果,我就可以根據期望值是否大於我買這張刮刮樂的錢來決定是否划算。那麼,期望值要怎麼計算呢?
    • https://chart.googleapis.com/chart?cht=tx&chl=%5C%5B%20E%5BX%5D%20%3D%20%5Csum_%7Bx%7D%20x%20%5Ccdot%20P(X%3Dx)%20%5C%5D 或是https://chart.googleapis.com/chart?cht=tx&chl=%5C%5B%20E%5BY%5D%20%3D%20%5Cint_%7B-%5Cinfty%7D%5E%7B%5Cinfty%7D%20y%20%5Ccdot%20f(y)%20%5C%2C%20dy%20%5C%5D 都是期望值的計算公式,只是前者是離散型,後者是連續型。從公式我們可以看的出來,要計算期望值的話,我只需要將所有樣本會發生的機率乘上該樣本的值,最後全部加總即可。以剛剛的例子來說明的話,就是把每個獎項的中獎機率乘上該獎項的金額,最後把所有獎項加起來,就是該張刮刮樂的期望值。知道怎麼算之後,大家下次買刮刮樂之前可以試算一下是否划算,還可以在朋友面前展示一下自己強大的數學能力(?
    • 如果今天每個樣本的機率都是一樣的話,那麼我們可以使用這個公式;https://chart.googleapis.com/chart?cht=tx&chl=%5Cmu%20%3D%20%5Cfrac%7B1%7D%7BN%7D%20%5Csum_%7Bi%3D1%7D%5E%7BN%7D%20x_i 這個公式其實也就是我們平常在計算平均的公式,所以,當每個樣本的機率都一樣的時候,期望值就會等於平均數。

    3. 變異數(Variance)

    • 上面我們介紹了平均數跟期望值,他們主要是反映整體數據的集中程度,以平均來看就很好理解了,就是所有數據會往哪個地方集中。除了這個資訊之外,要掌握整體的資訊我們還需要另外一個關鍵的工具,也就是變異數:https://chart.googleapis.com/chart?cht=tx&chl=%5Ctext%7BVar%7D(X)%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%20%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20(x_i%20-%20%5Cmu)%5E2
    • 變異數可以告訴我們整體數據的分散程度,從公式上也可以看的出來(因為是在計算所有樣本與平均值之間的差異),變異數越大表示數據越分散,反之則表示數據越集中。
    • 對這個部分感興趣的可以參考:https://zh.wikipedia.org/zh-tw/%E6%96%B9%E5%B7%AE ,裡面有嚴謹的定義根更詳細的說明。

二、欠擬合(Underfitting)與過擬合(Overfitting)

  • 先前在我們在https://ithelp.ithome.com.tw/articles/10322150 這篇裡面有稍微提過「過擬合(Overfitting)」現象,這邊再重新介紹一下!https://ithelp.ithome.com.tw/upload/images/20230927/20163299M0VANgkoap.png
  • 在上圖中,我們可以看到將兩個顏色分類的三種方式,最左邊的用了一個很簡單的函數(二元一次函數)來分割兩個區域,因為模型很簡單的關係,似乎很難將兩個區域分類的很好;最右邊的使用了一個較為複雜的模型(超過三次以上的函數)來分割兩個區域,因為模型有較多的參數可以調整,所以分類的效果也非常的好,鎮誌連邊界上的點都可以正確分類。
  • 現在,一個新的問題來了,如果我把最右邊的模型拿來用在別的資料上面會發生甚麼事?畢竟他是學得最好的模型。一般情況下,這樣使用的話模型的表現會下降很多,這是因為模型在原先的資料集上學習得太好了,導致它失去了一些彈性,使得輸入資料稍微有點不同的話,模型辨識能力就會大幅下降。這種現象就是「過擬合(Overfitting)」,也就是我們先前舉例過的,為了學好數學瘋狂的刷題庫,可是到了考試的時候老師稍微改一下數字就算不出來了,因為你是一板一眼的學習那些題庫的資訊,並沒有學到背後的概念或精隨。AI的學習也是一樣的道理,我們希望模型可以學到的不是單純將數據視為數據在處理問題,而是要能夠透過大量的數據觀察出背後蘊含的模式或規律。
  • 如果是上圖最左邊的情況,我們則稱為「欠擬合(Underfitting)」,與「過擬合」相反,「欠擬合」指的是模型還甚麼東西都沒有學到的時候,這時候的模型就像是剛接新概念的學生,突然被要求要解一道稍微複雜的題目一樣,他可能連他要做甚麼都還不清楚,更遑論要把題目解出來。
  • 所以,AI模型的學習,最理想的狀況應該是上圖中間的樣子,在模型的「精準」與「彈性/靈活」之間取得一個適當的平衡,這時候的模型在訓練資料上的可以得到一個還不錯的表現,如果拿去用在別的資料上面,模型表現也不會下降太多,是比較理想的狀況。

三、欠擬合/過擬合與偏差(Bias)/變異數(Variance)

  • 介紹完了欠擬合/過擬合的概念之後,我們可以用比較數學的角度來討論了。理想的AI模型應該要能夠適應與訓練資料同類型的所有資料,就好比說今天我使用5000張貓跟狗的圖片訓練出一個貓狗分類器,我其實是希望訓練出來的這個模型可以用在所有貓跟狗的圖片上,而不是僅限於我用來訓練的圖片。可是,正如我們一開始提到的,我們很難獲得整體的資訊,通常只能透過「抽樣」取得的樣本來推測整體的結果。AI模型的訓練也是相同的,我沒辦法獲得所有貓狗圖片的資訊,只能使用這5000張圖片,試圖去訓練出一個可以在整體上都可以運行的模型。
  • 正是因為這樣的原因,所以所有的AI模型都會產生誤差(Bias),這個誤差的來源就是來自我們所擁有的樣本跟整體資料的差異,用數學來描述的話就是https://chart.googleapis.com/chart?cht=tx&chl=%5C%5B%20%5Ctext%7BBias%7D(%5Chat%7Bf%7D(x))%20%3D%20%5Cmathbb%7BE%7D%5B%5Chat%7Bf%7D(x)%5D%20-%20f(x)%20%5C%5D,其中https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%7Bf%7D(x)表示我們所使用的AI模型預測出來的函數,接受輸入資料x之後預期出來的結果,而https://chart.googleapis.com/chart?cht=tx&chl=f(x)則是實際的函數接受輸入資料x之後的結果。有了這樣的誤差資訊,我們可以進一步推導出這種情況下的變異數應該是:https://chart.googleapis.com/chart?cht=tx&chl=%5C%5B%20%5Ctext%7BVariance%7D(%5Chat%7Bf%7D(x))%20%3D%20%5Cmathbb%7BE%7D%5B(%5Chat%7Bf%7D(x)%20-%20%5Cmathbb%7BE%7D%5B%5Chat%7Bf%7D(x)%5D)%5E2%5D%20%5C%5D
  • 為甚麼需要這兩個資訊?偏差告訴我們,模型預測出來的規則與實際數據背後的規則差了多少,而變異數則是告訴我們所有預測出來的結果與實際結果的偏離程度。如果用套圈圈來說明的話,就像下圖所展示的https://ithelp.ithome.com.tw/upload/images/20230927/20163299ueuJn5Dm6F.png
  • Bias高表示離目標越遠,越低表示越接近目標;Variance越高表示越分散,越低表示越集中。所以最理想的狀況應該是左下角的,最集中又誤差最小。
  • 欠擬合對應的就是圖中左上角的狀況,因為還未學到精隨,所以數據很集中(因為還沒學習出差異化),可是卻與實際目標差異很大;過擬合對應的則是圖中右下角的情況,雖然誤差很低,可是因為學得太過仔細了,所以果輸入資料稍微不同,就會產生出非常不同的結果,導致結果較為分散。
  • 綜上所述,過擬合現象出現的原因有可能是:訓練資料太少、樣本太過單一、模型太複雜或是訓練資料所受到的干擾太多,導致模型關注錯重點了;而欠擬合的成因則剛好相反,模型使用的特徵太少了或是模型太簡單了,導致模型無法掌握數據背後的規則。
  • 礙於篇幅問題,如果對於欠擬合/過擬合在數學函數中有甚麼意義的話可以參考:https://www.geeksforgeeks.org/underfitting-and-overfitting-in-machine-learning/ ,裡面也從數學的角度出發,說明如何避免欠擬合/過擬合現象。或是也可以參考我們之前的內容:https://ithelp.ithome.com.tw/articles/10322150 看看要如何解決過擬合問題。

四、總結

  • 今天的內容中,我們從基礎的統計概念討論到AI訓練中的兩大問題,除了說明兩種不同的現象以外,也分析了他們的成因(我們可以透過不同方法避免那些成因,就可以降低出現欠擬合/過擬合的機率),希望大家可以透過今天的說明與舉例,對這些概念有更深的了解!

上一篇
唧唧復唧唧--AI中的機率統計之生成模型(Generative model)與判別模型(Discriminative model)
下一篇
CNN經典論文導讀(一)--LeNet與AlexNet
系列文
AI白話文運動系列之「A!給我那張Image!」30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言